package mybox.engine;

public class Kettenlager implements Figur {

	File4Qcad file4qcad;
	QVector center;
	public double hauptRadius;
	public double ueberDeckungsRadius;
	public double umfang;
	public double sectorPhi;
	public double gliedRadius;
	public double gliedAbstand;
	public int anzahlZaehne;
	
	public Circle hauptKreis;
	public Circle achsenLoch;
	public Circle ueberDeckungsKreis;
	public Circle achsenLochUDK;
	public QVector ueberDKVerschiebung;
	double achsenLochRadius=4;
	
	
	public Circle[] zahnKreis;
	
	public Kettenlager(
			File4Qcad file4qcad, 
 			QVector center, 	
			double gliedRadius, 
			double gliedAbstand, 
			int anzahlZaehne) {
		
		this.file4qcad=file4qcad;
		this.center=center;
		this.gliedRadius=gliedRadius;
		this.gliedAbstand=gliedAbstand;
		this.anzahlZaehne=anzahlZaehne;
		umfang=anzahlZaehne*(gliedRadius*2+gliedAbstand);
		hauptRadius=umfang/(2*java.lang.Math.PI);		 
		ueberDeckungsRadius=hauptRadius+gliedRadius;
		sectorPhi=2*java.lang.Math.PI/anzahlZaehne;	
		
		hauptKreis = new Circle(file4qcad, center, hauptRadius);
		achsenLoch = new Circle(file4qcad, center, achsenLochRadius);
		ueberDKVerschiebung = new QVector(2*ueberDeckungsRadius+gliedRadius,0);
		ueberDeckungsKreis = new Circle(file4qcad, center.vecAdd(ueberDKVerschiebung), ueberDeckungsRadius);
		achsenLochUDK = new Circle(file4qcad, center.vecAdd(ueberDKVerschiebung), achsenLochRadius);
		
		zahnKreis = new Circle[anzahlZaehne];
		for (int zackIdx=0; zackIdx<anzahlZaehne;zackIdx++) {
			 double aktPhi=zackIdx*sectorPhi;
			 QVector zahnCenter = new QVector(center.x+hauptRadius*java.lang.Math.cos(aktPhi),
					                          center.y+hauptRadius*java.lang.Math.sin(aktPhi)
					                            );
		     zahnKreis[zackIdx] = new Circle(file4qcad,zahnCenter,gliedRadius);	
		}
		
	}
	
	public void draw() {		
		for (int zackIdx=0; zackIdx<anzahlZaehne;zackIdx++) {
			zahnKreis[zackIdx].draw();
		}
		hauptKreis.draw();
		ueberDeckungsKreis.draw();		
	}
	
	public void drawAchsenLoch() {
		achsenLoch.draw();
		achsenLochUDK.draw();			
	}
	
	

}
